package ysq.xyg.host.service;


import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import ysq.xyg.base.model.dto.ReturnEntity;
import ysq.xyg.base.service.BaseService;
import ysq.xyg.host.model.dto.HostItemSelectDto;
import ysq.xyg.host.model.po.CityDTO;
import ysq.xyg.host.model.po.CityDataDTO;
import ysq.xyg.host.model.po.HostItem;
import ysq.xyg.sys.model.po.SysUser;
import ysq.xyg.host.model.vo.HostItemVo;

import java.util.List;
/**
 * 房产模块-小区信息service接口
 *
 * @author shengQiang yu
 * @date 2019-7-1 15:25:38
 */
public interface HostItemService extends BaseService<HostItem> {
    /**
     * 分页查询
     *
     * @param hostItemVo 对象
     * @param pageSize 当前页面
     * @param pageNum 页面数量
     * @return ReturnEntity 对象
     * @author shengQiang yu
     * @date 2019-7-1 15:25:38
     */
    ReturnEntity page(HostItemVo hostItemVo, int pageSize, int pageNum);

    /**
     * 关联分页查询
     * @param hostItemVo
     * @param pageSize
     * @param pageNum
     * @author congcong tao
     * @date 2019/8/30 11:32
     */
    ReturnEntity pageLeftDto(HostItemVo hostItemVo, int pageSize, int pageNum);

    /**
     * 获取集合
     *
     * @param hostItemVo 对象
     * @return List<BaseDict> BaseDict集合
     * @author shengQiang yu
     * @date 2019-7-1 15:25:38
     */
    List<HostItem> listLeft(HostItemVo hostItemVo);

    /**
     * 修改
     *
     * @param hostItemVo 对象
     * @param currentUser 当前用户
     * @return ReturnEntity 对象
     * @author shengQiang yu
     * @date 2019-7-1 15:25:38
     */
    @CacheEvict(value={"hotHostItemSelectList", "hostItemSelectList"}, allEntries=true)
    ReturnEntity addOrUpdate(HostItemVo hostItemVo, SysUser currentUser);

    /**
     * 删除
     *
     * @param id 主键id删除
     * @param currentUser 当前用户
     * @return ReturnEntity 对象
     * @author shengQiang yu
     * @date 2019-7-1 15:25:38
     */
    @CacheEvict(value={"hotHostItemSelectList", "hostItemSelectList"}, allEntries=true)
    ReturnEntity delete(String id, SysUser currentUser);

    /**
     * 获取集合
     *
     * @param hostItemVo 对象
     * @return List<HostItem> HostItem集合
     * @author shengQiang yu
     * @date 2019-7-1 15:25:38
     */
    List<HostItem> acceptList(HostItemVo hostItemVo);

    /**
     * 获取单个
     *
     * @param hostItemVo 对象
     * @return List<HostItem> BaseDict集合
     * @author shengQiang yu
     * @date 2019-7-1 15:25:38
     */
    HostItem selectLeftObject(HostItemVo hostItemVo);

    /**
     * 查询小区信息用于选项
     * @author congcong tao
     * @date 2019-09-04 20:39
     */
    List<HostItemSelectDto> selectItemSelectList();

    @Cacheable(value="hotHostItemSelectList")
    List<CityDataDTO> hotHostItemSelectList();

    @Cacheable(value="hostItemSelectList")
    List<CityDTO> hostItemSelectList();
}
